import dayjs from 'dayjs'

/**
 * 格式化日期时间
 * @param {string} dateStr - 日期字符串
 * @param {string} format - 格式化模板，默认为 'YYYY-MM-DD HH:mm:ss'
 * @returns {string} 格式化后的日期字符串
 */
export const formatDateTime = (dateStr, format = 'YYYY-MM-DD HH:mm:ss') => {
  if (!dateStr) return '-'
  return dayjs(dateStr).format(format)
}

/**
 * 格式化日期（不包含时间）
 * @param {string} dateStr - 日期字符串
 * @returns {string} 格式化后的日期字符串
 */
export const formatDate = (dateStr) => {
  if (!dateStr) return '-'
  return dayjs(dateStr).format('YYYY-MM-DD')
}

/**
 * 格式化时间（不包含日期）
 * @param {string} dateStr - 日期字符串
 * @returns {string} 格式化后的时间字符串
 */
export const formatTime = (dateStr) => {
  if (!dateStr) return '-'
  return dayjs(dateStr).format('HH:mm:ss')
}

/**
 * 获取当前时间戳
 * @returns {number} 当前时间戳
 */
export const getCurrentTimestamp = () => {
  return dayjs().valueOf()
}

/**
 * 获取当前格式化日期时间
 * @param {string} format - 格式化模板，默认为 'YYYY-MM-DD HH:mm:ss'
 * @returns {string} 当前格式化日期时间
 */
export const getCurrentDateTime = (format = 'YYYY-MM-DD HH:mm:ss') => {
  return dayjs().format(format)
}

/**
 * 格式化时间范围 - 将日期字符串转换为一天的开始时间
 * @param {string} dateStr - 日期字符串 (YYYY-MM-DD)
 * @returns {string} 格式化后的开始时间 (YYYY-MM-DD 00:00:00)
 */
export const formatStartTime = (dateStr) => {
  if (!dateStr) return ''
  return dayjs(dateStr).format('YYYY-MM-DD 00:00:00')
}

/**
 * 格式化时间范围 - 将日期字符串转换为一天的结束时间
 * @param {string} dateStr - 日期字符串 (YYYY-MM-DD)
 * @returns {string} 格式化后的结束时间 (YYYY-MM-DD 23:59:59)
 */
export const formatEndTime = (dateStr) => {
  if (!dateStr) return ''
  return dayjs(dateStr).format('YYYY-MM-DD 23:59:59')
}

/**
 * 处理时间范围数组，返回格式化的开始和结束时间
 * @param {Array} timeRange - 时间范围数组 [startDate, endDate]
 * @returns {Object} 包含 startTime 和 endTime 的对象
 */
export const formatTimeRange = (timeRange) => {
  if (!timeRange || !Array.isArray(timeRange) || timeRange.length !== 2) {
    return { startTime: '', endTime: '' }
  }
  
  return {
    startTime: formatStartTime(timeRange[0]),
    endTime: formatEndTime(timeRange[1])
  }
}